package sv.com.bolsaTrabajo.view.bean.managedbeans;

import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.context.RequestContext;
import sv.com.bolsaTrabajo.model.dao.RubroFacade;
import sv.com.bolsaTrabajo.model.entities.Rubro;
import sv.com.bolsaTrabajo.view.bean.ManejadorAccion;

/**
 *
 * @author Karina Palacios
 */
@ManagedBean
@SessionScoped
public final class RubroMB extends ManejadorAccion {

    @EJB
    private RubroFacade rubroFacade;
    private Rubro rubro;
    private List<Rubro> rubros;

    /**
     * Constructor
     */
    public RubroMB() {
        limpiarRubro();
        rubro = new Rubro();
    }

    public void limpiarRubro() {
        setRubro(new Rubro());
    }

    public List<Rubro> getRubros() {
        rubros = rubroFacade.obtenerTodos();
        return rubros;
    }

    public void guardarEntidad() {
        try {
            System.out.println("====> Ingresando a crear Rubro");
            getRubro().setFechaMod(new Date());

            if (rubro.getIdRubro() == null) {
                rubroFacade.crear(rubro);
                lanzarMensajeInformacion("Exito", "Rubro guardada correctamente");
            } else {
                rubroFacade.modificar(rubro);
                lanzarMensajeInformacion("Exito", "Rubro modificada correctamente");
            }
            RequestContext.getCurrentInstance().update("IDFrmRubro");
            RequestContext.getCurrentInstance().execute("WVDialogRubro.hide();");
        } catch (Exception e) {
            lanzarMensajeError("", "Error al guardar Rubro", e);
        }
    }

    public void modificarEntidad(Rubro modRubro) {
        try {
            this.rubro = modRubro;
        } catch (Exception e) {
            lanzarMensajeError("Error al actualizar datos", "No se pueden asignar los valores para Rubro", e);
        }
        RequestContext.getCurrentInstance().update("");
    }

    /**
     * ****************** Getters and Setter ********************
     */
    public RubroFacade getRubroFacade() {
        return rubroFacade;
    }

    public void setRubroFacade(RubroFacade rubroFacade) {
        this.rubroFacade = rubroFacade;
    }

    public Rubro getRubro() {
        return rubro;
    }

    public void setRubro(Rubro rubro) {
        this.rubro = rubro;
    }

}
